home *** CD-ROM | disk | FTP | other *** search
- /*
- * For the definition of struct GlyphMap,
- */
- #include <diskfont/glyph.h>
-
-
- #ifdef MEMTRACE
- #define xalloc(n) (Xalloc((int)n, __FILE__, __FUNC__, __LINE__))
- #define xfree(p) (Xfree((char *)p, __FILE__, __FUNC__, __LINE__))
- #else
- #define xalloc(n) Xalloc ((int) n)
- #define xfree(p) Xfree ((char *) p)
- #endif
-
-
- /**
- * fontmisc.h
- **/
- typedef unsigned char *pointer;
- typedef int Bool;
-
-
- /**
- * Xmd.h Xprotostr.h Xproto.h
- **/
-
- /*****************************************************************
- * Structure Defns
- * Structures needed for replies
- *****************************************************************/
- typedef struct {
- short leftSideBearing;
- short rightSideBearing;
- short characterWidth;
- short ascent;
- short descent;
- unsigned short attributes;
- } xCharInfo;
-
-
- /**
- * fsmasks.h
- **/
-
- /* font format macros */
- #define BitmapFormatByteOrderMask (1L << 0)
- #define BitmapFormatBitOrderMask (1L << 1)
- #define BitmapFormatImageRectMask (3L << 2)
- #define BitmapFormatScanlinePadMask (3L << 8)
- #define BitmapFormatScanlineUnitMask (3L << 12)
-
- #define BitmapFormatByteOrderLSB (0)
- #define BitmapFormatByteOrderMSB (1L << 0)
- #define BitmapFormatBitOrderLSB (0)
- #define BitmapFormatBitOrderMSB (1L << 1)
-
- #define BitmapFormatImageRectMin (0L << 2)
- #define BitmapFormatImageRectMaxWidth (1L << 2)
- #define BitmapFormatImageRectMax (2L << 2)
-
- #define BitmapFormatScanlinePad8 (0L << 8)
- #define BitmapFormatScanlinePad16 (1L << 8)
- #define BitmapFormatScanlinePad32 (2L << 8)
- #define BitmapFormatScanlinePad64 (3L << 8)
-
- #define BitmapFormatScanlineUnit8 (0L << 12)
- #define BitmapFormatScanlineUnit16 (1L << 12)
- #define BitmapFormatScanlineUnit32 (2L << 12)
- #define BitmapFormatScanlineUnit64 (3L << 12)
-
- #define BitmapFormatMaskByte (1L << 0)
- #define BitmapFormatMaskBit (1L << 1)
- #define BitmapFormatMaskImageRectangle (1L << 2)
- #define BitmapFormatMaskScanLinePad (1L << 3)
- #define BitmapFormatMaskScanLineUnit (1L << 4)
-
- typedef unsigned long fsBitmapFormat;
- typedef unsigned long fsBitmapFormatMask;
-
-
- /**
- * font.h
- **/
- /* data structures */
- typedef struct _Font *FontPtr;
- typedef struct _FontInfo *FontInfoPtr;
- typedef struct _FontPathElement *FontPathElementPtr;
- typedef struct _CharInfo *CharInfoPtr;
-
- /* draw direction */
- #define LeftToRight 0
- #define RightToLeft 1
- #define BottomToTop 2
- #define TopToBottom 3
-
- #define NO_SUCH_CHAR -1
-
-
- #define AllocError 80
- #define StillWorking 81
- #define FontNameAlias 82
- #define BadFontName 83
- #define Suspended 84
- #define Successful 85
- #define BadFontPath 86
- #define BadCharRange 87
- #define BadFontFormat 88
- #define FPEResetFailed 89 /* for when an FPE reset won't work */
-
- /* OpenFont flags */
- #define FontLoadInfo 0x0001
- #define FontLoadProps 0x0002
- #define FontLoadMetrics 0x0004
- #define FontLoadBitmaps 0x0008
- #define FontLoadAll 0x000f
- #define FontOpenSync 0x0010
-
- /* Query flags */
- #define LoadAll 0x1
- #define FinishRamge 0x2
- #define EightBitFont 0x4
- #define SixteenBitFont 0x8
-
-
- /**
- * fontstruct.h
- **/
- /*
- * This version of the server font data structure is only for describing
- * the in memory data structure. The file structure is not necessarily a
- * copy of this. That is up to the compiler and the OS layer font loading
- * machinery.
- */
-
- typedef enum {
- Linear8Bit, TwoD8Bit, Linear16Bit, TwoD16Bit
- } FontEncoding;
-
- typedef struct _CharInfo {
- xCharInfo metrics; /* info preformatted for Queries */
- char *bits; /* pointer to glyph image */
-
- /***
- * THE FOLLOWING WAS ADDED 5/13/93 BY AMISH S. DAVE
- ***/
- struct GlyphMap *glyphmap; /* pointer to Amiga's struct GlyphMap */
- /* defined in <diskfont/glyph.h> */
- } CharInfoRec;
-
-
- /*
- * Font is created at font load time. It is specific to a single encoding.
- * e.g. not all of the glyphs in a font may be part of a single encoding.
- */
-
- typedef struct _FontInfo {
- unsigned short firstCol;
- unsigned short lastCol;
- unsigned short firstRow;
- unsigned short lastRow;
- unsigned short defaultCh;
- unsigned int noOverlap:1;
- unsigned int terminalFont:1;
- unsigned int constantMetrics:1;
- unsigned int constantWidth:1;
- unsigned int inkInside:1;
- unsigned int inkMetrics:1;
- unsigned int allExist:1;
- unsigned int drawDirection:2;
- unsigned int cachable:1;
- unsigned int anamorphic:1;
- short maxOverlap;
- short pad;
- xCharInfo maxbounds;
- xCharInfo minbounds;
- xCharInfo ink_maxbounds;
- xCharInfo ink_minbounds;
- short fontAscent;
- short fontDescent;
- int nprops;
- } FontInfoRec;
-
- typedef struct _Font {
- int refcnt;
- FontInfoRec info;
- char bit;
- char byte;
- char glyph;
- char scan;
- fsBitmapFormat format;
- int (*get_glyphs) ( /* font, count, chars, encoding, count, glyphs */ );
- int (*get_metrics) ( /* font, count, chars, encoding, count, glyphs */ );
- void (*unload_font) ( /* font */ );
- FontPathElementPtr fpe;
- pointer svrPrivate;
- pointer fontPrivate;
- pointer fpePrivate;
- int maxPrivate;
- pointer *devPrivates;
- } FontRec;
-
-
- /* External view of font paths */
- typedef struct _FontPathElement {
- int name_length;
- char *name;
- int type;
- int refcount;
- pointer private;
- } FontPathElementRec;
-
-
- /*
- * Various macros for computing values based on contents of
- * the above structures
- */
-
- #define GLYPHWIDTHPIXELS(pci) \
- ((pci)->metrics.rightSideBearing - (pci)->metrics.leftSideBearing)
-
- #define GLYPHHEIGHTPIXELS(pci) \
- ((pci)->metrics.ascent + (pci)->metrics.descent)
-
- #define GLYPHWIDTHBYTES(pci) (((GLYPHWIDTHPIXELS(pci))+7) >> 3)
-
- #define GLYPHWIDTHPADDED(bc) (((bc)+7) & ~0x7)
-
- #define BYTES_PER_ROW(bits, nbytes) \
- ((nbytes) == 1 ? (((bits)+7)>>3) /* pad to 1 byte */ \
- :(nbytes) == 2 ? ((((bits)+15)>>3)&~1) /* pad to 2 bytes */ \
- :(nbytes) == 4 ? ((((bits)+31)>>3)&~3) /* pad to 4 bytes */ \
- :(nbytes) == 8 ? ((((bits)+63)>>3)&~7) /* pad to 8 bytes */ \
- : 0)
-
- #define BYTES_FOR_GLYPH(ci,pad) (GLYPHHEIGHTPIXELS(ci) * \
- BYTES_PER_ROW(GLYPHWIDTHPIXELS(ci),pad))
-
- /*
- * Macros for computing different bounding boxes for fonts; from
- * the font protocol
- */
-
- #define FONT_MAX_ASCENT(pi) ((pi)->fontAscent > (pi)->ink_maxbounds.ascent ? \
- (pi)->fontAscent : (pi)->ink_maxbounds.ascent)
- #define FONT_MAX_DESCENT(pi) ((pi)->fontDescent > (pi)->ink_maxbounds.descent ? \
- (pi)->fontDescent : (pi)->ink_maxbounds.descent)
- #define FONT_MAX_HEIGHT(pi) (FONT_MAX_ASCENT(pi) + FONT_MAX_DESCENT(pi))
- #define FONT_MIN_LEFT(pi) ((pi)->ink_minbounds.leftSideBearing < 0 ? \
- (pi)->ink_minbounds.leftSideBearing : 0)
- #define FONT_MAX_RIGHT(pi) ((pi)->ink_maxbounds.rightSideBearing > \
- (pi)->ink_maxbounds.characterWidth ? \
- (pi)->ink_maxbounds.rightSideBearing : \
- (pi)->ink_maxbounds.characterWidth)
- #define FONT_MAX_WIDTH(pi) (FONT_MAX_RIGHT(pi) - FONT_MIN_LEFT(pi))
-
-
-